package cn.itcast.task;

import cn.itcast.utils.MailUtil;
import cn.itcast.vo.ContractEmail;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;

import java.text.SimpleDateFormat;
import java.util.Date;

/*
   消息的监听器：自定义一个类实现MessageListener
   消息监听器的作用：一直监听队列，只有队列有消息马上去消费
 */
public class EmailTask implements MessageListener {

    public void sendEmail(){
        //判断当前时间-3是否等于0

        //如果是，发送邮件
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("当前系统时间："+dateFormat.format(new Date()));
    }

    //由于队列中的数据都是json数据，所以我们只要使用ObjectMapper对象把json转换为java对象

    private ObjectMapper objectMapper = new ObjectMapper();

    @Override
    public void onMessage(Message message) {
        /*SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("当前系统时间："+dateFormat.format(new Date()));*/
        //获取消息
        byte[] body = message.getBody();
        //使用objectmapper将读取到的数据转换为指定的java对象
        try {
            ContractEmail contractEmail = objectMapper.readValue(body, ContractEmail.class);
            MailUtil.sendMsg(contractEmail.getEmail(),"尊敬的"+contractEmail.getContract().getInputBy()+",您好","还有三天就到交货期限了！");
            System.out.println("发送邮件完毕");
            } catch (Exception e) {
                e.printStackTrace();
            }
    }
}
